catvm.memory.navigator={};
var Navigator = function Navigator() {
    //如果不能new  要抛出一个错误
    throw new TypeError("Illegal constructor");
}//构造函数
catvm.safefunction(Navigator); //tostring 保护
//设置原型链上显示的名字***************************************************************************
Object.defineProperties(Navigator.prototype, {
    [Symbol.toStringTag]: {
        value: "Navigator",
        configurable: true
    }
});

// 原型指向原型父亲***************************************************************************
navigator = {};
navigator.__proto__ = Navigator.prototype

//该环境下的属性和方法***************************************************************************
Navigator.prototype.plugins = []
Navigator.prototype.javaEnabled = function javaEnabled() {
    return false
};catvm.safefunction(Navigator.prototype.javaEnabled);
Navigator.prototype.cookieEnabled = true
Navigator.prototype.doNotTrack = 'yes'
Navigator.prototype.language = 'zh-CN'
Navigator.prototype.userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36';
Navigator.prototype.appVersion = '5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36';
// 对于Navigator.prototype原型无法调用，但是navigator实例却可以调用的属性/方法进行抛出错误的设置***************************************************************************
for (var i in Navigator.prototype) {
    navigator[i] = Navigator.prototype[i];
    Navigator.prototype.__defineGetter__(i, function () {
        throw new TypeError("Illegal constructor");
    })
}

//代理***************************************************************************
navigator = catvm.proxy(navigator)

